<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Distributed Objects Everywhere</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Distributed_Objects_Everywhere"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Distributed_Objects_Everywhere rootpage-Distributed_Objects_Everywhere skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Distributed Objects Everywhere</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p><b>Distributed Objects Everywhere</b> (<b>DOE</b>) was a long-running <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> project to build a <a href="Distributed_computing" title="Distributed computing">distributed computing</a> environment based on the <a href="CORBA" class="mw-redirect" title="CORBA">CORBA</a> system in the 'back end' and <a href="OpenStep" title="OpenStep">OpenStep</a> as the user interface. First started in 1990 and announced soon thereafter, it remained <a href="Vaporware" title="Vaporware">vaporware</a> for many years before it was finally released as <b>NEO</b> in 1995. It was sold for only a short period before being dropped (along with OpenStep) in 1996. In its place is what is today known as <a href="Enterprise_JavaBeans" class="mw-redirect" title="Enterprise JavaBeans">Enterprise JavaBeans</a>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Background">Background</h2></div>
<p>In the early 1990s the 'next big thing' in computing was to use desktop <a href="Microcomputer" title="Microcomputer">microcomputers</a> to display and edit data being provided by <a href="Mainframe_computer" title="Mainframe computer">mainframes</a> and <a href="Minicomputer" title="Minicomputer">minicomputers</a>. Although a number of methods for this sort of access already existed, the division of labor was not at all even. For instance, <a href="SQL" title="SQL">SQL</a> required the workstation to download huge data sets and then process them locally, whereas use of <a href="Terminal_emulator" title="Terminal emulator">terminal emulators</a> left all of the work to the server and provided no <a href="GUI" class="mw-redirect" title="GUI">GUI</a>.
</p><p>It seemed that the proper split of duties would be to have a cooperative set of objects, the workstation being responsible for display and user interaction, with processing on the server. Standing in the way of this sort of solution was the massive differences in <a href="Operating_system" title="Operating system">operating systems</a> and <a href="Programming_language" title="Programming language">programming languages</a> between platforms. While it might be possible to build such a system that would work on any one combination of workstation and server, the same solution would not work on any other system.
</p><p>Oddly, the differences between any two <a href="Programming_language" title="Programming language">programming languages</a> on a single platform was almost as great. Each language had its own format for passing parameters into <a href="Procedure_call" class="mw-redirect" title="Procedure call">procedure calls</a>, the file formats that they generated were often quite different. In general terms, it was not always possible to write different portions of a program in different languages, although doing so often has real utility. The problem was not so acute on <a href="Minicomputer" title="Minicomputer">minicomputers</a> and mainframes where the vendor often specified standards for their libraries, but on microcomputers the programming systems were generally delivered by a variety of 3rd party companies with no interest in standardization.
</p><p>Nevertheless, this problem was being addressed in the early 1990s through the introduction of various <a href="Shared_library" title="Shared library">shared library</a> systems. These were actually intended to ease resource use on smaller platforms, by allowing a number of programs using a common resource, like the GUI, to share a single copy of code instead of each loading a separate copy into memory. As a side effect of being able to be called from many programs, these systems also defined a standard way to call them, using an <a href="Interface_definition_language" class="mw-redirect" title="Interface definition language">interface definition language</a>, or IDL, to allow any language on the platform to understand the code inside the library.
</p><p>Extending these systems to support <a href="Remote_procedure_call" title="Remote procedure call">remote procedure calls</a> behind the scenes was seen as a natural evolution, providing a solution to the client/server programming problem. At the time there were a number of major projects to deliver such a system, including <a href="IBM" title="IBM">IBM</a>'s <a href="System_Object_Model" class="mw-redirect" title="System Object Model">System Object Model</a> (SOM/DSOM), <a href="NeXT" title="NeXT">NeXT</a>'s <a href="Portable_Distributed_Objects" title="Portable Distributed Objects">Portable Distributed Objects</a>, <a href="Microsoft" title="Microsoft">Microsoft</a>'s <a href="Component_Object_Model" title="Component Object Model">Component Object Model</a> (COM/DCOM) and many <a href="CORBA" class="mw-redirect" title="CORBA">CORBA</a> flavors. Sun, attempting to position itself as the future IBM in terms of backoffice support, felt they had to attack this market as well.
</p>
<div class="mw-heading mw-heading2"><h2 id="Spring,_DOE,_OpenStep,_NEO">Spring, DOE, OpenStep, NEO</h2></div>
<p>Sun's solution was based on work in their <a href="Spring_(operating_system)" title="Spring (operating system)">Spring</a> operating system, which used intercommunicating objects for almost all programming tasks. Modifying this to work under a 'traditional' Unix like Solaris was not all that difficult, although Unix makes the assumption that all programs run locally, and an interface for remote access had to be added. For this, DOE added an <a href="Object_request_broker" title="Object request broker">object request broker</a> (ORB) that ran on the backoffice servers, listening for DOE requests and handing them off to the proper program to be handled. During development, CORBA became a key <a href="Buzzword" title="Buzzword">buzzword</a> in the industry. This prompted a delay while the ORB was re-engineered for CORBA support. Under the CORBA model, different objects, like those from DOE or SOM, would be able to interact by sharing a common interface.
</p><p>A bigger problem for Sun is that they had no integrated desktop object programming solution. Although <a href="C%2B%2B" title="C++">C++</a> object libraries were becoming common on some platforms, their own <a href="SunOS" title="SunOS">SunOS</a> (later known as <a href="Solaris_(operating_system)" class="mw-redirect" title="Solaris (operating system)">Solaris</a>) operating system and associated <a href="SunView" title="SunView">SunView</a> and <a href="X_Window_System" title="X Window System">X</a> window systems were 'plain C' based, while their newer <a href="NeWS" title="NeWS">NeWS</a> windowing environment was based on a network-extensible object oriented dialect of <a href="PostScript" title="PostScript">PostScript</a>.
</p><p>In order to supply a comprehensive and flexible object programming solution, Sun turned to NeXT and the two developed <a href="OpenStep" title="OpenStep">OpenStep</a>. The idea was to have OpenStep programs calling DOE objects on Sun servers, providing a backoffice-to-frontoffice solution on Sun machines. OpenStep was not released until 1993, further delaying the project.
</p><p>By the time DOE, now known as NEO, was released in 1995,<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Sun had already moved on to <a href="Java_(programming_language)" title="Java (programming language)">Java</a> as their next big thing. Java was now the GUI of choice for client-side applications, and Sun's OpenStep plans were quietly dropped (see <a href="Lighthouse_Design" title="Lighthouse Design">Lighthouse Design</a>). NEO was re-positioned as a Java system with the introduction of the "Joe" framework,<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> but it saw little use. Components of NEO and Joe were eventually subsumed into <a href="Enterprise_JavaBeans" class="mw-redirect" title="Enterprise JavaBeans">Enterprise JavaBeans</a>.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p><p>Although distributed objects, and CORBA in particular, were the "next big thing" in the early 1990s, by the second half of the decade interest in them had essentially disappeared. Web-based applications running entirely on the server became the new "next big thing", and the need for a powerful display system on the client side faded, largely replaced by lightweight GUIs based on <a href="HTML" title="HTML">HTML</a> and <a href="JavaScript" title="JavaScript">JavaScript</a> ("<a href="Browser_User_Interface" class="mw-redirect" title="Browser User Interface">Browser User Interfaces</a>").
</p>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation pressrelease cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20070311022126/http://www.sun.com/smi/Press/sunflash/1995-09/sunflash.950920.1420.xml">"SunSoft Introduces NEO, the Industry's First Complete Networked Object Computing Environment"</a> (Press release). Sun Microsystems, Inc. September 20, 1995. Archived from <a rel="nofollow" class="external text" href="http://www.sun.com/smi/Press/sunflash/1995-09/sunflash.950920.1420.xml">the original</a> on 2007-03-11<span class="reference-accessdate">. Retrieved <span class="nowrap">2006-12-13</span></span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite class="citation pressrelease cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20070320052957/http://www.sun.com/smi/Press/sunflash/1996-03/sunflash.960326.13870.xml">"Sun Announces Product that Connects Java to Business Applications"</a> (Press release). Sun Microsystems, Inc. March 26, 1996. Archived from <a rel="nofollow" class="external text" href="http://www.sun.com/smi/Press/sunflash/1996-03/sunflash.960326.13870.xml">the original</a> on 2007-03-20<span class="reference-accessdate">. Retrieved <span class="nowrap">2006-12-13</span></span>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite id="CITEREFRobert_McMillanNiall_McKay1997" class="citation web cs1">Robert McMillan; Niall McKay (November 14, 1997). <a rel="nofollow" class="external text" href="http://sunsite.uakom.sk/sunworldonline/swol-11-1997/swol-11-neo.html">"Goodbye NEO, hello Enterprise Java Beans"</a>. <i>SunWorld</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2013-05-01</span></span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><cite id="CITEREFShah1996" class="citation journal cs1">Shah, Rawn (June 1, 1996). <a rel="nofollow" class="external text" href="https://www.infoworld.com/article/2077168/distributed-object-computing-with-joe-and-neo.html">"Distributed Object Computing with Joe and NEO"</a>. <i><a href="JavaWorld" class="mw-redirect" title="JavaWorld">JavaWorld</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">2020-07-15</span></span>.</cite></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-02-28" href="https://en.wikipedia.org/wiki/?title=Distributed_Objects_Everywhere&oldid=1278075147">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>